home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hráč 2005 January
/
Hrac_76_2005-01_dvd.iso
/
lokalizacie
/
Medal Of Honor Allied Assault
/
mohaa10cz.exe
/
{app}
/
main
/
Pak10.pk3
/
Global
/
obj_dm.scr
< prev
next >
Wrap
Text File
|
2002-03-23
|
7KB
|
255 lines
//
//
// LOGIC FOR OBJECTIVE BASED DEATHMATCH ENTITIES
//
//
//***********************************************
// initialization thread...
//***********************************************
bomb_thinker:
// Steve says planting time = 6 seconds
// defusing time = 12 second
// tick time = 36 seconds
level.bomb_set = 0
level.bomb_defuse_time = 60 //tenths of a second
level.bomb_set_time = 50 //tenths of a second
level.bomb_tick_time = 45 //seconds (was 60 seconds, then 30 seconds)
// level.wait_after_explode = 2 //seconds time after target is destroyed before the level ends (no longer used, done in code now)
level.bomb_explosion_radius = 1054 //quake units
level.bomb_use_distance = 128 //quake units
level.bomb_damage = 200
level.bombusefov = 30
level.subtitleX = 100
level.subtitleY = 50
println "----------------------Z-----------------------"
println "self = " self
println "self.target (flak 88 or other) = " self.target
println "self.target.destroyed_model = " self.target.destroyed_model
println "self.target.target (collision entity) = " self.target.target
println "self.trigger_name = " self.trigger_name
println "self.exploder_set = " self.exploder_set
println "self.explosion_fx = " self.explosion_fx
println "self.explosion_sound = " self.explosion_sound
println "self.killarea = " self.killarea
println "----------------------Z-----------------------"
self.target.collisionent = self.target.target
self.target notsolid
thread bomb_waittill_set
end
//***********************************************
// first thread... controls allies using the trigger
//***********************************************
bomb_waittill_set:
self model items/pulse_explosive.tik
while ( $(self.trigger_name) )
{
println "waittill trigger " self.trigger_name
self.trigger_name waittill trigger
local.player = parm.other
//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'
if (local.player.dmteam != level.planting_team)
{
goto bomb_waittill_set
println "failed dmteam check" local.player.dmteam
}
local.counter = 0
while ( (Isalive local.player) && (local.player cansee self level.bombusefov level.bomb_use_distance) && (local.player.useheld == 1) )
{
if (local.counter == 0)
local.player stopwatch (level.bomb_set_time * .1)
local.counter++
// if ((local.counter % 5) == 0)
// locprint level.subtitleX level.subtitleY("set "+ local.counter)
wait .1
if (local.counter >= level.bomb_set_time)
{
iprintlnbold "Bomba byla pripevnena!"
if (level.planting_team == "allies")
self playsound dfr_objective_o
else
self playsound den_objective_o
thread bomb_waittill_defuse
thread bomb_waittill_explode
self.live = 1
level.bomb_set ++
end
}
}
if (local.counter > 0)
local.player stopwatch 0
println "usetrigger but failed check"
if ! (self cansee local.player level.bombusefov level.bomb_use_distance)
println "failed cansee check"
if ! (local.player.useheld == 1)
println "failed useheld check" local.player.useheld
}
end
//***********************************************
// second thread... controls axis using the trigger
//***********************************************
bomb_waittill_defuse:
while ( $(self.trigger_name) )
{
self.trigger_name waittill trigger
local.player = parm.other
//"local.player.dmteam", can be 'spectator', 'freeforall', 'allies' or 'axis'
if (local.player.dmteam != level.defusing_team)
{
println "failed dmteam check" local.player.dmteam
goto bomb_waittill_defuse
}
local.counter = 0
while ( (Isalive local.player) && (local.player cansee self level.bombusefov level.bomb_use_distance) && (local.player.useheld == 1) )
{
if (local.counter == 0)
local.player stopwatch (level.bomb_defuse_time * .1)
local.counter++
// if ((local.counter % 5) == 0)
// locprint level.subtitleX level.subtitleY ("defuse "+local.counter)
wait .1
if (local.counter >= level.bomb_defuse_time)
{
iprintlnbold "Bomba byla deaktivovana!"
if (level.defusing_team == "allies")
self playsound dfr_diffused_d
else
self playsound den_diffused_d
thread bomb_waittill_set //start first thread again
self.live = 0
level.bomb_set --
end
}
}
if (local.counter > 0)
local.player stopwatch 0
}
end
//***********************************************
// third thread... times the bomb and makes it explode at the right time
//***********************************************
bomb_waittill_explode:
self model items/explosive.tik
self playsound plantbomb
self loopsound bombtick
local.start_time = level.time
while (level.time < (local.start_time + level.bomb_tick_time) )
{
wait .1
if (self.live != 1)
{
self stoploopsound
end
}
if (level.time == (local.start_time + level.bomb_tick_time - 10) )
{
self stoploopsound
self loopsound final_countdown
}
}
self stoploopsound
thread bomb_explode
end
//***********************************************
// fourth thread... controls the explosion
//***********************************************
bomb_explode:
self.trigger_name remove
thread jitter_large 0
if (self.exploder_set != NIL)
exec global/exploder.scr::explode self.exploder_set
if (self.explosion_fx != NIL)
{
self thread spawn_fx self.explosion_fx
}
if (self.explosion_sound != NIL)
self playsound self.explosion_sound
if (self.target != NIL)
{
if (self.target.destroyed_model != NIL)
{
local.damaged = self.target thread spawn_damaged self.target.destroyed_model
}
self.target remove
waitframe
}
radiusdamage self.origin level.bomb_damage level.bomb_explosion_radius
if (self.killarea != NIL)
{
self.killarea volumedamage 1000
}
self hide
self.exploded = 1
// we delay the decrementing of level.bomb_set so that the script has
// time to determin the winner before the timelimit gets checked and hit
wait 0.5
level.bomb_set --
end
//----------------------------------
spawn_fx local.fx:
local.temp = spawn script_model model local.fx
local.temp.origin = self.origin
local.temp anim start
wait 5
local.temp remove
end
spawn_damaged local.model:
local.damaged = spawn script_model model local.model
local.damaged.origin = self.origin
local.damaged.angles = self.angles
end local.damaged
//******************************
// jitter large effect
// jitter_large [delay]
//******************************
jitter_large local.time:
if (local.time)
wait local.time
waitexec global/earthquake.scr .35 10 0 0
waitexec global/earthquake.scr .23 6 0 0
waitexec global/earthquake.scr 1 1 0 0
waitexec global/earthquake.scr 1.25 .3 0 1
end